package com.yystudy.rpc.register;

import com.yystudy.rpc.spi.SpiLoader;

/**
 * 注册中心工厂（用于获取注册中心对象）
 *
 */
public class RegistryFactory {

    static {
        // 加载Registry接口的实现类到SPI加载器中（静态代码块，只会在类加载时触发一次，之后就不会执行了）
        SpiLoader.load(Registry.class);
    }

    /**
     * 默认注册中心（Etcd）
     */
    private static final Registry DEFAULT_REGISTRY = new EtcdRegistry();

    /**
     * 获取实例
     *
     * @param key 实现类key名
     * @return  实现类
     */
    public static Registry getInstance(String key) {
        return SpiLoader.getInstance(Registry.class, key);
    }

}